#ifndef LAZYRNTSTRATEGY_H
#define LAZYRNTSTRATEGY_H


#if defined (_WIN32)
	#pragma once
#endif

#include <LDF/VisComponentStrategy.h>
#include "../../ToolkitLayer.h"
#include <LDF/VisComponent.h>
#include <LDF/LargeDisplayManager.h>
#include <LDF/IBufferProxy.h>
#include "RNTStrategy.h"

/**
 * This class extends the RNT Strategy to allow for "lazy" (for components that don't use button buffers)
 * RNT behavior.
 *
 * @author Julie Stromer - juliestromer@gmail.com
 * @since August 6, 2008
 */
class TOOLKITLAYER_API LazyRNTStrategy : public RNTStrategy
{
	// Attributes
protected:
	/** Button buffer type identifier. */
	unsigned int buttonBufferType;

	// BUTTON BUFFER VALUES
	/** No button value. */
	unsigned char noButtonValue;
	/** Movable area button value. */
	unsigned char movableAreaButtonValue;

public:
	LazyRNTStrategy();

	~LazyRNTStrategy();


protected:

	/**
	 * Initializes the properties (i. e., i-buffers) of the associated
	 * component.
	 */
	void initProperties();

	/**
	 * Handles the given event.
	 *
	 * @param evt the event to be handled.
	 */
	void onEvent(LargeDisplayEvent* evt);
	
	/**
	 * Fills the active button buffer with the default values.
	 * @param buffer the button buffer to be filled.
	 */
	void fillButtonBuffer(IBuffer<unsigned char>* buffer);

	/**
	 * Defines the strategy to be used when the associated component is
	 * resized.
	 *
	 * @param width the new width of the component.
	 * @param height the new height of the component.
	 */
	void resize(unsigned int width, unsigned int height);

}; 

#endif